home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / p4 / p4-1_2a.lha / p4-1.2a / messages / sr_master.c < prev    next >
C/C++ Source or Header  |  1992-10-19  |  2KB  |  90 lines

  1. #include "p4.h"
  2. #include "sr_user.h"
  3.     
  4. main(argc,argv)
  5. int argc;
  6. char **argv;
  7. {
  8.     char buf[100];
  9.     int i, n;
  10.     int size;
  11.     int slv = 3;
  12.     int next;
  13.     int nslaves_t;
  14.     int nslaves_l;
  15.     int start, end;
  16.     char msg[200];
  17.     int type;
  18.     int id;
  19.     int from;
  20.     int my_id;
  21.     int my_cl_id;
  22.     char *incoming, *cp;
  23.     int start_time,end_time;
  24.     
  25.     p4_initenv(&argc,argv);
  26.     p4_create_procgroup();
  27.     p4_dprintfl(9,"Starting master code.\n");
  28.     
  29.     nslaves_t = p4_num_total_ids() - 1;
  30.     nslaves_l = p4_num_cluster_ids() - 1;
  31.     p4_get_cluster_ids(&start,&end);
  32.  
  33.     my_id = p4_get_my_id();
  34.     my_cl_id = p4_get_my_cluster_id();
  35.     
  36.     p4_dprintfl(5,"p4_num_total_slaves=%d num_cluster_slaves=%d\n", 
  37.         nslaves_t,nslaves_l);
  38.     p4_dprintfl(5,"first_local_id=%d last_local_id=%d\n",start,end);
  39.     p4_dprintfl(5,"my_id=%d my_cluster_id=%d\n\n",my_id,my_cl_id);
  40.     p4_dprintfl(5,"sr_m: my group id is %d\n",p4_global->proctable[my_id].group_id);
  41.     
  42.     printf("enter a string:\n");
  43.     while (fgets(msg, sizeof(msg), stdin) != NULL)
  44.     {
  45.         for(cp=msg, i=1; *cp; i++, cp++)
  46.         if(*cp == '\n')
  47.         {
  48.         *cp = 0;
  49.         break;
  50.         }
  51.     p4_dprintfl(99,"sr_master sending %s size=%d\n", msg,i);
  52.     start_time = p4_clock();
  53.     p4_sendr(100, 1, msg, i);
  54.     p4_dprintfl(99,"sr_master receiving...\n");
  55.     type = -1;
  56.     from = -1;
  57.     /**********
  58.     while (!p4_messages_available(&type,&from))
  59.         ;
  60.     printf("master has msg available: type=%d from=%d\n",type,from);
  61.     **********/
  62.     incoming = NULL;
  63.     p4_recv(&type,&from, &incoming, &size);
  64.     end_time = p4_clock();
  65.     printf("total time=%d \n",end_time-start_time);
  66.     printf("master received :%s: from %d\n", incoming, from);
  67.     p4_dprintfl(10,"master: received from=%d type=%d size=%d buf=%s\n", 
  68.            from, type, size, incoming);
  69.     p4_msg_free(incoming);
  70.     printf("enter a string:\n");
  71.     }
  72.     
  73.  
  74.     p4_dprintfl(8,"waiting for end msg\n");
  75.  
  76.     p4_sendr(END, 1, msg, 0);
  77.     type = -1;
  78.     from = -1;
  79.     incoming = NULL;
  80.     p4_recv(&type, &from, &incoming, &size);
  81.     p4_dprintfl(8,"done  from=%d type=%d size=%d \n", 
  82.          from, type, size);
  83.     p4_msg_free(incoming);
  84.     
  85.     p4_dprintfl(8,"master entering waitforend\n");
  86.     p4_wait_for_end();
  87.     p4_dprintfl(8,"master past waitforend\n");
  88.     printf("master exiting normally\n");
  89. }
  90.